//
//  NSDate+HECore.h
//  HealthFamily
//
//  Created by 吴欧 on 2020/10/23.
//  Copyright © 2020 honglutec. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger, NSDateFormaterMode) {
    NSDateFormaterModeDefault,      /** 年-月-日 时:分:秒 */
    NSDateFormaterModeTime,         /** 年-月-日 时:分 */
    NSDateFormaterModeDay,          /** 年-月-日 */
    NSDateFormaterModeDayAnother,   /** *年*月*日 */
    NSDateFormaterModeMD,             /** * 月*日 */
    NSDateFormaterModeDayNoYear,     /** * 月*日  时:分*/
    NSDateFormaterModeTimeSecond,   /** 时:分:秒 */
    NSDateFormaterModeTimeMinute    /** 时:分 */
};

@interface NSDateFormatter (CF)

+ (NSDateFormatter *)dateFormaterWithMode:(NSDateFormaterMode)formaterMode;

@end

@interface NSDate (HECore)


@property (nonatomic, assign) NSInteger year;               //年
@property (nonatomic, assign) NSInteger month;              //月
@property (nonatomic, assign) NSInteger day;                //日
@property (nonatomic, assign) NSInteger hour;               //时
@property (nonatomic, assign) NSInteger minute;             //分
@property (nonatomic, assign) NSInteger second;             //秒

@property (nonatomic, assign) NSInteger weekday;            //周几
@property (nonatomic, assign) NSInteger weekmonth;          //第几周（本月）
@property (nonatomic, assign) NSInteger weekyear;           //第几周（本年）
@property (nonatomic, copy)   NSString *weekStr;            //星期几

@property (nonatomic, copy)   NSString *yesterday;          //昨天
@property (nonatomic, copy)   NSString *tomorrow;           //明天
@property (nonatomic, copy)   NSString *dayAfterTomorrow;   //后天

+ (NSString *)getNowDay:(NSDateFormaterMode)formaterMode;

//date -> 格式化date
+(NSDate *)dateToDate:(NSDate *)date formaterMode:(NSDateFormaterMode)formaterMode;

//字符串 -> date
+(NSDate *)stringToDate:(NSString *)string formaterMode:(NSDateFormaterMode)formaterMode;

// 时间戳转Date
+(NSDate *)timestringToDate:(NSString *)timestamp;


//data -> 字符串   获取指定格式的日期字符串
+(NSString *)dateToString:(NSDate *)date formaterMode:(NSDateFormaterMode)formaterMode;

//字符串 -> 字符串   获取指定格式的日期字符串
+(NSString *)regularDateString:(NSString *)originalDate formaterMode:(NSDateFormaterMode)formaterMode;

//判断是否为今天
+ (BOOL)isTodayWithDate:(NSDate *)date;

//判断是否为昨天
+ (BOOL)isYesterdayWithDate:(NSDate *)date;

//判断是否为昨天、今天、明天、后天……
+ (NSInteger)dayWithDate:(NSDate *)date;

/*
 * 需要传入的时间格式 2017-06-14 14:18:54    暂不考虑跨年
 * 时间显示规则
 * 当天       时:分
 * 前一天      昨天
 * 其余       月:日
 */
+(NSString *)inputTimeStr:(NSString *)timeStr;


// 把时间戳转成聊天时间（上午 10:00  、  昨天 14:00 、 3月15日 15:00）
+ (NSString*)chatingTime:(NSString *)timestring;

//计算时长 天 - 小时 - 分
+(NSString *)intervalSinceFromDate:(NSString *)fromDate toDate:(NSString *)toDate dateModel:(NSDateFormaterMode)dateModel;


//时间戳转日期
+(NSString *)timestampToDate:(NSString *)timestamp;

//时间戳转日期
+(NSString *)timestampToDate:(NSString *)timestamp formaterMode:(NSDateFormaterMode)formaterMode;

//日期对比
+ (int)compareOneDate:(NSDate *)date1 withAnotherDate:(NSDate *)date2;

//日期对比
+ (int)compareOneDateString:(NSString *)date1 withAnotherDateString:(NSString *)date2;

//获取农历日期
+(NSDictionary *)getChineseCalendarWithDate:(NSDate *)date;

+ (NSInteger)minuteStartTime:(NSString *)startTime endTime:(NSString *)endTime;

//计算时间差
+ (NSString *)dateInterval:(NSDate *)date time:(NSInteger)minute;

//跳转到偏差时间点
+(NSDate *)getResultTime:(NSString *)time second:(NSInteger)second;

//获取当前时间戳  （以秒为单位）
+(NSString *)getNowTimeTimestamp;

//获取当前时间戳  （以毫秒为单位）
+(NSString *)getNowTimeTimestamp3;

//将本地日期字符串转为UTC日期字符串
//本地日期格式:2013-08-03 12:53:51
//可自行指定输入输出格式
+(NSString *)getUTCFormateLocalDate:(NSString *)localDate;

//将UTC日期字符串转为本地时间字符串
//输入的UTC日期格式2013-08-03T04:53:51+0000
+(NSString *)getLocalDateFormateUTCDate:(NSString *)utcDate;

/// 在当前日期后 添加n天
+ (NSDate *)getDate:(NSDate *)fromDate daysAhead:(NSUInteger)days;

/// 根据间隔时间 获取某个日期，可加减时间
+ (NSString *)getDateWithIntervalTime:(NSInteger)seconds formaterMode:(NSDateFormaterMode)formaterMode;

/// 19930911 转1993-09-11
+ (NSString *)idCardDateToFormat:(NSString *)dateStr;

/// 19930911转年龄
+ (NSString *)idCardDateToAge:(NSString *)dateStr;

@end

NS_ASSUME_NONNULL_END
